#-*- coding:utf-8 -*-

from __future__ import unicode_literals

from django.db import models
from django.contrib.auth.models import User

# Create your models here.

class Article(models.Model):
    '''帖子表
    models表字段第一个参数可以用 u"别名" 标明字段名称，效果同 verbose_name='别名'；
    如果ForeignKey中第一个参数被外键表名占用，就要用到verbose_name了。'''
    title = models.CharField(u'文章标题',max_length=255,unique=True)
    plate = models.ForeignKey("Plate",verbose_name=u"板块")
    img = models.ImageField()
    summary = models.CharField(u"文章简介",max_length=255)
    content = models.TextField(u"内容")
    author = models.ForeignKey("UserInfo")
    publish_date = models.DateField(auto_now=True)
    def __unicode__(self):
        return "<%s,author:%s>" %(self.title,self.author)

class Plate(models.Model):
    '''帖子板块
    板块要先预备好，也可以是动态生成的，但是这里显示固定好的；
    板块的管理员可以有多个，所以用多对多映射用户表。    '''
    plate = models.CharField(max_length=64,unique=True)
    admin = models.ManyToManyField('UserInfo')
    def __unicode__(self):
        return self.plate

class UserInfo(models.Model):
    '''账户信息表
    使用Django自带的用户认证表  from django.contrib.auth.models import User ，
    里面包含了username和password等，它是一个OneToOne的关系；每一个账户对应原生User表的一个对象。'''
    username = models.OneToOneField(User)
    nickname = models.CharField(max_length=32)
    group = models.ManyToManyField('UserGroup')
    '''webchat:朋友可以有多个，朋友的朋友也可以有多个，所以是多对多的关系
    聊天群组在webchat项目中的group定义'''
    friends = models.ManyToManyField('self',related_name='friend',blank=True,null=True)
    def __unicode__(self):
        return self.nickname

class UserGroup(models.Model):
    '''用户组'''
    group = models.CharField(max_length=64,unique=True)
    def __unicode__(self):
        return self.group

class Comment(models.Model):
    '''存储所有评论
    parent_comment字段是为了分级评论
    自关联ForeignKey("self")的时候，要加参数 related_name，而且名字不能和外键字段名称相同；
    因为反向查询的时候，Comment.parent_comment和Comment.comment会冲突。
    父评论中第一个评论没有parent，所以parent_comment可以为空。
    blank=True，是Django-admin页面中可以为空，null=True，代表数据库中可以为空；
    '''
    article = models.ForeignKey(Article)
    user = models.ForeignKey("UserInfo",null=True,blank=True)
    parent_comment = models.ForeignKey('self',related_name='parent',blank=True,null=True)
    comment = models.TextField(max_length=1000)
    date = models.DateTimeField(auto_now=True)
    def __unicode__(self):
        return "<%s,user:%s>" %(self.comment,self.user)

class ThumbUp(models.Model):
    '''点赞'''
    article = models.ForeignKey('Article')
    user = models.ForeignKey('UserInfo')
    date = models.DateTimeField(auto_now=True)
    def __unicode__(self):
        return "<user:%s>" % self.user